#include "rtc_time.h"

RTC_DateTypeDef GetData;    //获取日期结构体
RTC_TimeTypeDef GetTime;    //获取时间结构体
uint8_t time_set = 0;//用户设置时间标记
uint8_t time_get = 0;//用户获取时间标记


/**
 * @brief 将RTC时间发送到缓冲区
 *
 * 从RTC获取当前时间，并将其格式化为指定格式的字符串，然后将该字符串发送到给定的缓冲区中。
 *
 * @param buffer 缓冲区指针，用于存储格式化后的时间字符串
 * @param bufferSize 缓冲区大小
 */
void RTC_Time_Send_ToBuffer(char* buffer, size_t bufferSize)
{
    rtc_time_t tim = {0};

    RTC_GetTime(&tim);

    snprintf(buffer, bufferSize, "%02d/%02d/%02d %02d:%02d:%02d", 2000 + tim.Year, tim.Month, tim.Day, tim.Hours, tim.Minutes, tim.Seconds);
}





/**
 * @brief 获取实时时钟时间
 *
 * 从实时时钟（RTC）中获取当前的时间信息，并将其存储到给定的结构体中。
 *
 * @param time 指向存储时间信息的结构体的指针
 */
void RTC_GetTime(rtc_time_t* time)
{
    RTC_TimeTypeDef rtc_time;
    RTC_DateTypeDef rtc_date;

    HAL_RTC_GetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN);
    HAL_RTC_GetDate(&hrtc, &rtc_date, RTC_FORMAT_BIN);

    time->Hours = rtc_time.Hours;
    time->Minutes = rtc_time.Minutes;
    time->Seconds = rtc_time.Seconds;
    time->Year = rtc_date.Year;
    time->Month = rtc_date.Month;
    time->Day = rtc_date.Date; // 注意：通常 RTC 结构体中使用的是 'Date' 而不是 'Day'
}






